use strict;
use warnings;

package JasPerl::Util::Exceptions;

use JasPerl::Util::Throwable;

use Exception::Class (
    'JasPerl::Util::Exception' => {
        isa => 'JasPerl::Util::Throwable',
        description => 'Generic JasPerl exception'
    },

    'JasPerl::Util::CoercionException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Signal an illegal type conversion'
    },

    'JasPerl::Util::IllegalArgumentException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Signals an invalid argument to a method'
    },
    'JasPerl::Util::IllegalStateException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Signals that a method has been invoked at an illegal or inappropriate time'
    },
    'JasPerl::Util::IOException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Signals an I/O error'
    },
    'JasPerl::Util::MissingResourceException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Signals that a resource is missing'
    },
    'JasPerl::Util::NoSuchElementException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Thrown when there are no more elements in an enumeration'
    },
    'JasPerl::Util::NullPointerException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Thrown when a required object is not defined'
    },
    'JasPerl::Util::NumberFormatException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Thrown when a given string cannot be converted to a number'
    },
    'JasPerl::Util::UnsupportedOperationException' => {
        isa => 'JasPerl::Util::Exception',
        description => 'Thrown to indicate that the requested operation is not supported'
    }

);

1;
